perm filename ADHOC.SAI[1,BGB] blob sn#001255 filedate 1972-10-22 generic text, type T, neo UTF8
00100	BEGIN	"ADHOC"
00200		REQUIRE "ABBREV[SYS,BGB]" SOURCE_FILE;
00300		REQUIRE "TRIGER[SYS,BGB]" SOURCE_FILE;
00400	α ROAD TRAJECTORY;
00500		REQUIRE "TRAJCT[CAR,BGB]" LOAD_MODULE;
00600		EXTERNAL PROCEDURE TRAJCT (REAL L,∂R,∂Z; REFERENCE REAL X,Y,Z);
00700	α L DASH VALUES FOR DASHES 24 TO 38;
00800		PRELOAD_WITH
00900	1579.2233,		8.33,
01000	1602.8899,		8.41,
01100	1626.3066,		8.25,
01200	1649.9733,		8.41,
01300	1673.6399,		8.75,
01400	1697.8899,		8.50,
01500	1722.3899,		8.16,
01600	1745.1399,		8.33,
01700	1768.4733,		8.25,
01800	1792.0566,		8.16,
01900	1816.2233,		8.66,
02000	1841.3066,		8.91,
02100	1866.4733,		8.91,
02200	1892.3066,		9.16,
02300	1917.8066,		9.08,
02400	1943.4733,		8.91;
02500		REAL ARRAY DASH[1:32];
02600		REAL ARRAY XYZ[1:31,1:3];
02700	α ASSORTED  CONSTANTS;
02800		INTEGER I,FLG,FILE,TV,J;
02900		REAL AZM,RXY,ALT;
03000		REAL ARRAY CAM[1:4,1:3];
03100		REAL X,Y,Z;
03200		REAL IX,IY,IZ,JX,JY,JZ,KX,KY,KZ;
03300		REAL CTILT,STILT;
03400		REAL TMP1,TMP2,R;
03500	α TILT COSINE AND SINE;
03600		CTILT	←	COS(12*π/180);
03700		STILT	←	-SIN(12*π/180);
03800	α COMPUTE THE L FOR THE LAGGING EDGES OF THE DASHES;
03900		FOR I←2 STEP 2 UNTIL 30 DO
04000		DASH[I]	←	DASH[I] + DASH[I-1];
04100	α COMPUTE THE X,Y,Z LOCII FOR ALL THE IMAGES;
04200		FOR I←1 STEP 1 UNTIL 31 DO
04300	BEGIN
04400		TRAJCT(DASH[I],0,4.25,X,Y,Z);
04500		XYZ[I,1]←	X;
04600		XYZ[I,2]←	Y;
04700		XYZ[I,3]←	Z;
04800	END;
     

00100	α OPEN AND NAME THE A.CAM FILE;
00200		OPEN(1,"DSK",0,0,3,0,0,0);
00300		ENTER(1,"ACAM.LST",FLG);
00310		OPEN(2,"DSK",8,0,3,0,0,0);
00320		ENTER(2,"A.CAM",FLG);
00400	α OUTPUT SIXBIT FILE NAME AND A CAMERA LOCOR FOR THE 30 FRAMES;
00500		FOR I←1 STEP 1 UNTIL 30 DO
00600	BEGIN
00700		FILE	←	CVSIX("A"&CVS(I));
00800		WORDOUT(2,FILE);
00900	α UNIT K VECTOR FROM THERE TO HERE;
01000		KX	←	XYZ[I,1] - XYZ[I+1,1];
01100		KY	←	XYZ[I,2] - XYZ[I+1,2];
01200		KZ	←	XYZ[I,3] - XYZ[I+1,3];
01300		R	←	SQRT(KX↑2 + KY↑2 + KZ↑2);
01400		KX	←	KX/R;
01500		KY	←	KY/R;
01600		KZ	←	KZ/R;
01700	α TILT THE K VECTOR IN A VERTICAL PLANE;
01800		RXY	←	SQRT(KX↑2+KY↑2);
01900		TMP1	←	CTILT*KZ-STILT*RXY;
02000		TMP2	←	CTILT*RXY+STILT*KZ;
02100		KX	←	KX*TMP2/RXY;
02200		KY	←	KY*TMP2/RXY;
02300		KZ	←	TMP1;
02400	α PUT THE I UNIT VECTOR π/2 CCW FROM K IN THE HORIZONTAL PLANE;
02500		IX	←	-KY;
02600		IY	←	+KX;
02700		IZ	←	0;
02800		R	←	SQRT(IX↑2+IY↑2);
02900		IX	←	IX/R;
03000		IY	←	IY/R;
03100	α J IS K CROSS I;
03200		JX	←	KY*IZ - IY*KZ;
03300		JY	←	IX*KZ - KX*IZ;
03400		JZ	←	KX*IY - IX*KY;
     

00100	α PACK IT UP AND OUTPUT THE CAM LOCOR;
00200		ARRBLT(CAM[1,1],IX,9);
00300		CAM[4,1]←	XYZ[I,1];
00400		CAM[4,2]←	XYZ[I,2];
00500		CAM[4,3]←	XYZ[I,3];
00600		ARRYOUT(2,CAM[1,1],12);
00700	
00800	α LISTING OUTPUT;
00900	BEGIN	INTEGER II,JJ;
01000		OUT(1,"TVFILE A"&CVS(I));
01100		SETFORMAT(10,3);
01200		FOR II←1 STEP 1 UNTIL 4 DO
01300	BEGIN
01400		OUT(1,13&10);
01500		FOR JJ←1 STEP 1 UNTIL 3 DO
01600		OUT(1,9&CVF(CAM[II,JJ]));
01800	END;
01900		OUT(1,13&10);
02000		AZM	←	180*ATAN2(KY,KX)/π;
02100		RXY	←	SQRT(KX↑2 + KY↑2);
02200		ALT	←	180*ATAN2(KZ,RXY)/π;
02300		SETFORMAT(0,7);
02400		OUT(1,"AZIMUTH = "&CVS(AZM)&9);
02500		OUT(1,"ALTITUDE = "&CVS(ALT)&13&10);
02600		OUT(1,13&10);
02800	END;
02900	END;
02940		OUT(1,13&10&"EOF."&13&10);
03000		RELEASE(1);
03010		RELEASE(2);
03200	END	"ADHOC";